package com.ysh.springmvc.fileupdownload.controller;

import org.apache.commons.io.IOUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

/**
 * 袁胜虎 on 2022/8/31 11:40
 */
@RestController
public class FileDownLoadController {
    @RequestMapping("/download")
    public void downLoad(String fileName, HttpServletResponse response) {
        //根据用户的请求,确定出到底要下载哪个文件,把文件传递给客户端
        //假如说 我们这边的操作就是传递一个名字过来,我们去对应的目录找到这个文件,然后返回
        String path = "D:\\360MoveData\\Users\\27183\\Desktop\\TestMuLu\\";
        //我们发现下载的时候没有名字,因为我们是通过流传递的二进制数据,不包括名字,所以客户端不知道名字,我们需要告诉客户端
        try {
            response.addHeader("content-disposition","attachment;filename="+ URLEncoder.encode(fileName,"utf-8"));
            IOUtils.copy(new FileInputStream(path + fileName), response.getOutputStream());//将文件发送给客户端
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

}
